package com.entrogy.service;

import com.entrogy.bean.*;

import java.util.List;

/**
 * @ClassName FinalNoticeService
 * @Description
 * @Author luoxingjiang
 * @Date 2019-12-18 上午 10:13
 * @Version 1.0
 **/
public interface FinalNoticeService {

    /**
     * 查询学校评语列表
     * @param schoolCode
     * @param finalNoticeCommentId
     * @param uid
     * @return
     */
    List<FinalNoticeCommentTemplateEntity> listComment(Integer schoolCode, Integer finalNoticeCommentId, String uid);

    /**
     * 查询通知书信息
     * @param finalNoticeId
     * @param schoolCode
     * @return
     */
    FinalNoticeEntity getFinalNotice(Integer finalNoticeId, Integer schoolCode);

    /**
     * 教师插入或者修改评语记录
     * @param teacherCommentList
     * @param schoolCode
     * @return
     */
    boolean insertStudentEvaluate(List<FinalNoticeTeacherCommentEntity> teacherCommentList, Integer schoolCode);

    /**
     * 更新教师评语记录
     * @param finalNotice
     * @return
     */
    boolean updateStudentFinalNotice(FinalNoticeEntity finalNotice);

    /**
     * 班主任查询学生评语状态
     * @param uid
     * @param term
     * @param termOfYear
     * @return
     */
    List<StudentBasicInfoEntity> listStudentForEvaluate(String uid, String term, String termOfYear);

    /**
     * 查询已经下发了通知书的学生列表
     * @param schoolCode
     * @param gradeId
     * @param term
     * @param termOfYear
     * @param studentName
     * @param studentIdList
     * @return
     */
    List<StudentBasicInfoEntity> listStudentForFinalNotice(Integer schoolCode, Integer gradeId, String term, String termOfYear, String studentName, List<Integer> studentIdList);

    /**
     * 获取通知书内容模板
     * @param schoolCode
     * @param term
     * @param termOfYear
     * @param gradeId
     * @param deleteStatus
     * @return
     */
    List<FinalNoticeContentEntity> listFinalNoticeContent(Integer schoolCode, String term, String termOfYear, Integer gradeId, Integer deleteStatus);

    /**
     * 生成通知书
     * @param uid
     * @param term
     * @param termOfYear
     * @param gradeId
     * @param examId
     * @param finalNoticeContentId
     * @param override
     * @return
     */
    boolean generateFinalNotice(String uid, String term, String termOfYear, Integer gradeId, Integer examId, Integer finalNoticeContentId, Integer override);

    /**
     * 删除通知书内容
     * @param finalNoticeContentId
     * @return
     */
    boolean deleteFinalNoticeContent(Integer finalNoticeContentId);

    /**
     * 修改通知书内容模板
     * @param finalNoticeContent
     * @return
     */
    boolean updateFinalNoticeContent(FinalNoticeContentEntity finalNoticeContent);

    /**
     * 新增通知书内容模板
     * @param finalNoticeContent
     * @return
     */
    boolean insertFinalNoticeContent(FinalNoticeContentEntity finalNoticeContent);

    /**
     * 统计通知书条数
     * @param term
     * @param termOfYear
     * @param gradeId
     * @param schoolCode
     * @return
     */
    Integer countFinalNotice(String term, String termOfYear, Integer gradeId, Integer schoolCode);

    /**
     * 查询期末成绩&评语
     * @param examId
     * @param gradeId
     * @param scoreTableName
     * @return
     */
    List<StudentScoreEntity> listStudentFinalExamScore(Integer examId, Integer gradeId, String scoreTableName);

    /**
     * 新增评语
     * @param finalNoticeCommentTemplate
     * @return
     */
    Integer insertComment(FinalNoticeCommentTemplateEntity finalNoticeCommentTemplate);
}
